<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>vue.js - 基础</title>
</head>
<body>
    <div id="app">
        共点击:{{num}} 次
        <hr>
        <!-- 1.在父组件中监听子组件触发的自定义事件 事件名字注意要使用短横线命名法 -->
        <!-- <btn :num="num" @update:num="num=$event"></btn> -->

        <!-- 使用.sync 修饰符 实现数据传值的双向绑定 = > 就是上面写法的语法糖 -->
        <btn :num.sync="num"></btn>
    </div> 

    <!-- 引入vue框架 开发版 :包含警告 和调试信息 -->
    <script src="../lib/vue.js"></script>
    <script>
        Vue.component('btn' , {
            props:['num'],
            template:`<button @click="add">按钮 - {{count}}</button>`,
            data(){
                return {
                    count:this.num , // 创建一个data数据来接收传递的参数 , 避免直接操作父组件传递的值
                }
            },
            methods:{
                add(){
                    // this.num++; // 不建议直接修改父组件传递的参数 = > 遵循 "单向数据流" 规则
                    this.count++;
                    //2.触发自定义事件(就是在父组件中监听的自定义事件 : child-event)
                    this.$emit('update:num' , this.count);
                }
            }
        })

        //vm 就是根组件
        let vm = new Vue({
            el:"#app",//指定Vue挂载的DOM
            data:{//当前vue实例中使用的数据
                num:0
            },
            methods:{//当前Vue实例中使用到的方法
               }
        })
    </script>
</body>
</html>